package com.geeguo.ebuilder.core.common.utils;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.geeguo.ebuilder.core.common.model.query.Pagination;
import com.geeguo.ebuilder.core.common.model.vo.PageListVO;
import com.geeguo.ebuilder.core.common.model.vo.PaginationVO;

import java.util.Collections;
import java.util.List;
import java.util.Objects;

public class PageUtils {

    public static PaginationVO getPaginationVO(IPage<?> page) {
        if (Objects.isNull(page)) {
            return null;
        }
        PaginationVO paginationVO = new PaginationVO();
        paginationVO.setPageNo(page.getCurrent());
        paginationVO.setPageSize(page.getSize());
        paginationVO.setTotal(page.getTotal());
        return paginationVO;
    }

    public static <T> PageListVO<T> getPageListVO(IPage<?> page, List<T> list) {
        if (Objects.isNull(page)) {
            return null;
        }
        PaginationVO paginationVO = new PaginationVO();
        paginationVO.setPageNo(page.getCurrent());
        paginationVO.setPageSize(page.getSize());
        paginationVO.setTotal(page.getTotal());
        return new PageListVO<>(paginationVO, list);
    }

    public static <T> PageListVO<T> empty(Pagination page) {
        if (Objects.isNull(page)) {
            return null;
        }
        PaginationVO paginationVO = new PaginationVO();
        paginationVO.setPageNo((long) page.getPageNo());
        paginationVO.setPageSize((long) page.getPageSize());
        paginationVO.setTotal(0L);
        return new PageListVO<>(paginationVO, Collections.emptyList());
    }
}